import { LanguageEnum } from "@/types/language.ts";

export interface ChannelEquipmentProps {
  device: string;
  deviceId: string;
}

export interface UserRegisterReg {
  username: string;
  passwd: string;
  email: string;
  device: string;
  deviceId: string;
  upper_id: number;
  linkId: string;
  advid: string;
}
export interface TokenRes {
  accessToken: string;
  expiresIn: number;
  refreshExpiresIn: number;
  refreshToken: string;
}

export interface NotifyMsgStatRes {
  notRead: number;
  total: number;
}
export interface UserInfoRes {
  account: AccountRes;
  token: TokenRes;
  profile: ProfileRes;
  notifyMsgStat: NotifyMsgStatRes;
}

export interface AccountRes {
  uid: number;
  accountState: number;
  username: string;
  vipLevel: number;
  linkId: string;
  uniqid?: string;
}
export interface ProfileRes {
  email: string;
  avatar: string;
  language: LanguageEnum;
  areaNo: number;
  phoneNo: number;
  name: string;
  cpf: string;
  cpfName: string;
}
export interface UserToken {
  accessToken: string;
  expiresIn: number;
  refreshExpiresIn: number;
  refreshToken: string;
}
export interface UserLoginInfo {
  account: AccountRes;
  profile: ProfileRes;
  notifyMsgStat: NotifyMsgStatRes;
  token: UserToken;
}
export interface accountInfo extends Omit<AccountRes, "username"> {
  account: string;
  accountType: number;
  channelId: number;
  createTime: string;
  upperId: number;
  vipLevel: number;
  level: number;
}
export interface UserInfoDetails {
  account: accountInfo;
  profile: ProfileRes;
}
export interface UserLoginReq extends ChannelEquipmentProps {
  username: string;
  passwd: string;
}
export interface updateUserInfo {
  areaNo?: number;
  avatar?: string;
  email?: string;
  name?: string;
  newPassword?: string;
  oldPassword?: string;
  phoneNo?: number;
  cpf?: string;
  cpfName?: string;
}

export interface userHourDataRes {
  profit: number;
  recordNum: number;
  bets: number;
}
export interface CustomerConfigListRes {
  contactType: number;
  url: string;
}
export interface GetMediaConfigList {
  customBuoy: string;
  defaultBuoy: string;
  id: number;
  isSetting: number;
  mediaLink: string;
  mediaName: string;
  remark: string;
}
export interface GetMediaConfigListRes {
  list: GetMediaConfigList[];
  total: number;
}
export interface GameActRewardNumRes {
  actType: number;
  total: number;
}
export interface ConfData {
  androidInstallType: number;
  apkUrl: string;
  content: number;
  installGiftMoney: number;
  installGiftSwitch: number;
  installSwitch: number;
  iosInstallType: number;
  launchTime: number;
  needDama: number;
  showGiftMoney: number;
  timeInterval: number;
  appStoreUrl: string;
}
export interface ConfDataList {
  AdvName: string;
  AdvType: number;
  ConfigName: number;
  Id: number;
  Value: string;
}
export interface ConfModel {
  advPic: string;
  appDes: string;
  appLogo: string;
  appName: string;
  modelName: string;
  modelType: string;
  subtitle: string;
}
export interface GetInstallGuideConfigRes {
  conf: ConfData;
  id: number;
  list: ConfDataList;
  model: ConfModel;
  type: number;
  url: string;
}
export interface GetgroupClustersRes {
  channelId: number;
  customLogo: string;
  defaultIcon: string;
  groupName: string;
  id: number;
  position: number;
  providerId: number;
  showNumber: number;
  state: number;
}
export interface NewTokenRes {
  accessToken: string;
  expiresIn: 0;
}
